home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 May: Tool Chest / Dev.CD May 98 TC.toast / Tool Chest / Networking / HotSauce (Project X) / Meta-Content Format < prev    next >
Encoding:
Text File  |  1996-09-23  |  15.4 KB  |  331 lines  |  [TEXT/ttxt]

  1.                             Meta-Content Format
  2.  
  3.                                   R.V.Guha
  4.                                Apple Computer
  5.  
  6. This draft provides a description of the Meta-Content Format (MCF), the
  7. interchange format used by ProjectX (aka HotSauce). This is a document that
  8. is intended to evolve rapidly based on the feedback from the Internet
  9. community and from our experiences with applications of MCF.
  10.  
  11. Goals of the MCF
  12.  
  13. The goal of MCF is to provide an adequate language for representing a wide
  14. range of information about content. The content targeted includes web pages,
  15. gopher and ftp files, desktop files, email and structured (i.e., relational
  16. and object oriented) databases, etc. The corresponding meta-content includes
  17. indices such as Yahoo!, gopher and ftp directory structures, email headers,
  18. data dictionaries, etc.
  19.  
  20. ProjectX (aka HotSauce) is just one of the applications that is enabled by
  21. the MCF. It should be possible for many different applications to use the
  22. meta-content represented in the MCF.
  23.  
  24. Foundations of the MCF
  25.  
  26. The MCF has its origins in knowledge representation languages such as CycL,
  27. KRL and KIF. The version of MCF described in this document does not have the
  28. expressiveness of these languages, but hopefully, some future version will
  29. include the best of these languages. The expressiveness has intensionally
  30. been limited in version 1.0 of the MCF primarily for ease of use and for
  31. reasons related to computational complexity.
  32.  
  33. MCF is not intended to be an extension of markup languages such as HTML or
  34. SGML. While it is possible and sometimes useful to embed meta-content within
  35. HTML files, we believe that for many purposes, it would be better to extract
  36. out and independently represent this meta-content. MCF is intended to be a
  37. format for this representation. In fact, we expect a lot of meta-content to
  38. be embedded in content and extracted automatically by robots that use the
  39. MCF to represent the results of their activities. In this spirit, MCF should
  40. be able to represent the meta-content that proposals such as the Dublin Core
  41. aim to cover.
  42.  
  43. Though this draft does not address the issues of queries, updates and
  44. transactions, it is our goal to cover these issues in the near future.
  45. Project X currently incorporates some of these already, but it would be
  46. useful to make these part of the MCF as opposed to making them parts of
  47. applications based on the MCF.
  48.  
  49. Overview of MCF
  50.  
  51. MCF files contain descriptions of meta-content objects (MCO --- also
  52. sometimes referred to as "units".) A meta content object consists of the
  53. following.
  54.  
  55.    * a unit identifier.
  56.    * some number of slots, each with one or more values
  57.         o depending on the slot, there may be exactly one or more than one
  58.           value
  59.         o the value(s) may be strings, numbers, etc. or they may be pointers
  60.           to other objects. Pointers to other objects are represented using
  61.           unit identifiers.
  62.         o slot values are always sets. i.e., there is no significance to the
  63.           order of values and and number of times a value occurs. The
  64.           combination of the unit, slot name and a slot value can be
  65.           abstracted as a tuple in database terms or as a ground atomic
  66.           formula in logic terms.
  67.         o there is no minimal set of slots that an object should have,
  68.           though specific applications may require certain slots to be
  69.           present for certain kinds of objects.
  70.  
  71. MCF is an interchange format and does not make any assumptions about how
  72. information in this format is used by applications. It is our goal however
  73. aid the following :
  74.  
  75.    * there may be many sources (servers) of meta-content about a particular
  76.      piece of content. It should be possible for a client to mechanically
  77.      integrate these different pieces of meta-content. E.g., there may be
  78.      multiple agencies publishing "subjective ratings" of a certain web
  79.      pages. A client (such as Project X) should be able to obtain these
  80.      ratings from the different agencies and associate them all correctly
  81.      with the same page.
  82.    * it should be possible to separate out the meta-content from the content
  83.      itself. A user may have meta-content about hundreds of thousands of
  84.      files, web pages, etc. on his/her desktop and use this to decide what
  85.      content they actually want to access. It will rarely be possible for
  86.      the user to actually store that much content on his/her desktop.
  87.    * it should be possible for the user to edit meta-content (for personal
  88.      use) obtained from other sources. An example of this editing is the
  89.      reorganization of hierarchies obtained from a source such as Yahoo!
  90.    * it should be possible to get incremental updates. It should also be
  91.      possible for these incremental updates to be reconciled with the edits
  92.      made by the user in a consistent fashion.
  93.    * different applications may recognize different sets of slots. For
  94.      example, the current version of Project X is primarily meant for
  95.      navigation around directed graphs where the nodes correspond to either
  96.      topics or pages (addressable via urls). (Future versions will include
  97.      support for other slots dealing with subjective ratings of content,
  98.      mirror sites, etc.)
  99.  
  100. An Example
  101.  
  102. Given below are a couple of sample MCF files with comments. The nested list
  103. structure outlines the hierarchy. The hierarchy given below is complete only
  104. with respect to the children of the category Dogs. There are potentially
  105. other children of the other categories.
  106.  
  107.    * Animals
  108.         o Dogs
  109.              + Famous Dogs Page
  110.              + Best Pets Page
  111.              + Wild Dogs
  112.         o Cats
  113.              + Cat Lovers Page
  114.              + Cat Haters Page
  115.         o Pets
  116.              + General Pet Stuff
  117.                   + Best Pets Page
  118.                   + Cat Lovers Page
  119.                   + Pet Finders Inc.
  120.  
  121. Note that two of the items under "General Pet Stuff" also occur under other
  122. categories. We will divide this hierarchy up into two MCF files: Animals.mcf
  123. and GeneralPetStuff.mcf. You should view these files using a text editor
  124. such as SimpleText. Animals.html and GeneralPetStuff.html are html formatted
  125. versions of these files.
  126.  
  127. You should be able to drag this url --- Animals --- onto your Project X
  128. space and see portions of the above hierarchy. If you then select the node
  129. "General Pet Stuff" and invoke the Update Node menu item, you will get the
  130. complete subhierarchy under that node.
  131.  
  132. MCF Syntax
  133.  
  134. An MCF file contains a set of headers followed by a list of mcf object
  135. descriptions. Each object description starts on a new line with the token
  136. "unit:". An object description ends either when a new object description is
  137. encountered or when the end of the file is reached. The end of the file may
  138. be the end of the physical file or the end of the logical file. The logical
  139. end of the file is specified by the token end-file: appearing on a new line.
  140. Urls for MCF files should have the suffix "mcf".
  141.  
  142. An mcf object description has the following syntax.
  143. unit: < unit identifier >
  144. < slot-name > < value 1 > < value 2 >...
  145. < slot-name > < value 1 > < value 2 >...
  146. .
  147. .
  148. .
  149.  
  150. Lines starting with the character ';' are comment lines.
  151.  
  152. Unit Identifiers
  153.  
  154. Unit identifiers are strings. Identifiers may be relative or absolute.
  155. Absolute identifiers are typically Universal Resource Locators (urls).
  156. Relative identifiers for different objects in the same MCF file should be
  157. distinct. Absolute identifiers can be used to reference objects across MCF
  158. files.
  159.  
  160. Relative identifiers can only be used to reference objects within a file.
  161. Relative identifiers should start with the character '/' and should have the
  162. suffix ".mco".
  163.  
  164.    * Project X Specifics:
  165.  
  166.      Project X currently deals with 2 kinds of objects --- topics (or
  167.      categories) and content objects.
  168.  
  169.      The identifiers for content objects such as web pages, ftp sites, email
  170.      addresses, etc., which are typically addressable via urls, are assumed
  171.      to be their url.
  172.  
  173.      The identifier for categories/topics which have a web-accesible file
  174.      which provides the descriptions of its children should be the url of
  175.      that file. The url should have the suffix ".mcf". If there does not
  176.      exist such a file, then the identifier should be a relative url. The
  177.      earlier example illustrates this.
  178.  
  179. Slots
  180.  
  181. Slot names are restricted to non-white space characters and end with the
  182. character ':'. The syntax of the values depend on the slot. A list of slot
  183. values is semantically equivalent to a set. So, the order of values and the
  184. number of times a value occurs does not carry any significance.
  185.  
  186.    * Project X Specifics:
  187.  
  188.      The following slots are currently used by Project X:
  189.  
  190.         o name: the name of the object. A string.
  191.         o genls: identifiers of the parents of the object. Note that an
  192.           object may have multiple parents. Also note that cycles are
  193.           allowed.
  194.         o spec: identifiers of the children of the object. Note that every
  195.           spec: entry implies a genls: entry and vice versa. So, it is
  196.           neccesary to use only one, typically, genls:.
  197.         o default_genl_x: and default_genl_y: an integer that provides
  198.           ProjectX a hint about where the node should be placed relative to
  199.           its parent.
  200.         o genls_pos: [ parent_identifier x_coordinate y_coordinate].
  201.           genls_pos: implies a genls: relationship. The coordinates are
  202.           relative to the parent. Please note that coordinates should be
  203.           treated as relative measures and not as absolute locations. As the
  204.           number of children increases/decreases, the space
  205.           contracts/expands.
  206.  
  207.      If an object in a certain mcf file does not explicitly specify a
  208.      parent, the parent will default to the object whose identifier is the
  209.      url of that mcf file.
  210.  
  211.      Typically, an mcf file defines a sub-hierarchy. The file itself
  212.      corresponds to a topic node. The file may define one or more layers of
  213.      the hierarchy under it. The immediate children of the file's topic node
  214.      should either not specify any genls: slot or provide the the url of the
  215.      file as the value for the genls: slot. The first approach is better
  216.      because it allows for the file to be moved around more easily.
  217.  
  218.      It is upto the user (i.e., the end user who is viewing the
  219.      sub-hierarchy) to specify where in the user's global hierarchy this
  220.      subhierarchy fits. The user typically does this by dragging the url of
  221.      the mcf onto the region of space where they want the subhierarchy to be
  222.      placed.
  223.  
  224.      An MCF file need not provide a complete description of any object or a
  225.      complete list of node's children. If it does provide a complete list of
  226.      the children of an object, or more generally, all the values of a
  227.      certain slot for an object, this should be specified in the headers.
  228.  
  229. Headers
  230.  
  231. Headers are similar to meta-content object descriptions in that they are a
  232. sequence of slots and values. Headers really provide meta-meta-content. The
  233. header slots currently used are,
  234.  
  235.    * MCFVersion: a decimal number.
  236.    * FileCompleteAbout: a sequence of values of the form [identifier slot].
  237.      This is used to specify that the file contains all the values of slot
  238.      for the object denoted whose identifier is identifier. The earlier
  239.      example illustrates this.
  240.    * name: a string providing the name of the object corresponding to this
  241.      file.
  242.  
  243. The headers begin with the token begin-headers: and end with the token
  244. end-headers:. If the token unit: is encountered before the token
  245. end-headers: is encountered, an end-headers: token is assumed. Any
  246. characters appearing before a begin-headers: token or unit: token are
  247. ignored.
  248.  
  249. Additional Slots
  250.  
  251. The following slots are under consideration (for addition to Project X). We
  252. invite feedback on this list.
  253.  
  254.    * description: an ascii string that describes the object.
  255.    * instanceOf: identifiers for the mco categories (such as Topic, Desktop
  256.      File, Web Page, Person, Corporation) that this object is an instance
  257.      of. Project X currently only recognizes a few kinds of objects (Topic,
  258.      Desktop object, Gopher object and WWW page) and this is implicitly
  259.      derived from the identifier of that object.
  260.    * mirrors: urls of mirrors of this object.
  261.    * author_organization_name: string(s) giving the name(s) of the
  262.      organization(s) (such as "Apple Computer") to whom the content object
  263.      belongs. (The underscore notation is an experiment in allowing
  264.      modifiers and qualifiers that can be added to a slot to to change its
  265.      meaning in a precise way, in a fashion similar to the Dublin Core.)
  266.    * author_organization_mco: identifier(s) for the mco object(s)
  267.      corresponding to the organization(s) to whom the content object
  268.      belongs.
  269.    * author_individual_name: string(s) giving the name(s) of the
  270.      individuals(s) who is(are) the author(s) of this content object.
  271.    * author_individual_mco: identifier(s) for the mco object(s)
  272.      corresponding to the individual(s) who is(are) the author(s) of this
  273.      content object.
  274.    * mediaTypes: The media types present in this content object. QuickTime,
  275.      JPEG, etc. are media types and are denoted by strings such as
  276.      "QuickTime", "JPEG", etc. This is also intended to cover the data
  277.      representation of the object, such as Postscript file or Java Applet.
  278.    * rating: subjective ratings of the content object. Ratings will
  279.      following the general scheme outlined in the PICS Rating Systems and
  280.      Services. The syntax of the value is yet to be determined.
  281.    * firstPublicationDate: a single string giving the first publication date
  282.      of the object.
  283.    * lastRevisionDate: a single string giving the last revision date of the
  284.      object.
  285.    * size: an integer giving the approximate size of the object in bytes.
  286.    * availabilityStatus: a string describing the availability of the object.
  287.      The syntax of the value is yet to be determined.
  288.    * linksTo: identifiers for objects that this object contains hyperlinks
  289.      to.
  290.    * language: Strings specifying the languages (English, French, etc.) of
  291.      the content.
  292.    * topic: This is a refinement of genls: and will have the same
  293.      functionality.
  294.    * mentions: identifiers for the spatio-temporal objects (such as Boston
  295.      or George Washington) mentioned in the content.
  296.  
  297. Once these slots are available, Project X will be able to use them to
  298. provide more intelligent access to content.
  299.  
  300. Acknowledgements
  301.  
  302. I would like to thank Jed Harris for extensive feedback on the structure and
  303. content of this document. These people made Project X possible.
  304.  
  305. Appendix A: BNF for MCF files
  306.  
  307. < mcf file > -> < headers > < mco list > end-file:
  308. < headers > -> begin-headers: < linebreak > < slots > end-headers: <
  309. linebreak >
  310. < mco list > -> < mco > < mco list > | < mco >
  311. < mco > -> unit: < unit identifier > < linebreak > < slots >
  312.  
  313. < slots > -> < slot > < slots > | < slot >
  314. < slot > -> < slot name > < slot values > < linebreak >
  315. < slot values> -> < white space > < slot value > | < slot values >
  316.  
  317. < slot name > -> < token >:
  318. < slot value > -> < token > | < string > | < slot specific value >
  319.  
  320. < unit identifier > -> < absolute identifier > | < relative identifier >
  321. < absolute identifier > -> < string >
  322. < relative identifier > -> string beginning with the character '/' with the
  323. suffix .mco.
  324.  
  325. < token > -> character sequence with no white space or linebreaks
  326. < linebreak > -> any sequence of standard linebreak characters (including
  327. '\r' and '\n')
  328. < white space > -> any sequence of standard white space characters
  329. (including '\t' and ' ')
  330. < string > -> character sequence starting and ending with '"'
  331.